using System;
using System.Text.RegularExpressions;
namespace MyProgram
{
    
    class Program
    {
        delegate double Calc(double R); //объявили делегат

        static void Main(string[] args)
        {
            Calc calculate; //присвоили к делегату переменную
            double radius = 0, result; //инициализируем переменную для ввода радиуса и переменную для вывода значения

            Console.WriteLine("\t-- Программа для расчета выражений --\n");
            
            calculate = LineRound; //присваиваем к переменной делегата метод
            Console.Write("Введите радиус для расчета длины окружности: ");
            radius = Convert.ToDouble(Console.ReadLine());
            result = calculate(radius);

            calculate = PloshadRound;
            Console.Write("Введите радиус для расчета площади окружности: ");
            radius = Convert.ToDouble(Console.ReadLine());
            result = calculate(radius);
       
            calculate = SharVolume;
            Console.Write("Введите радиус для расчета объема шара: ");
            radius = Convert.ToDouble(Console.ReadLine());
            result = calculate(radius);
        }

        private static double LineRound(double R)
        {
            double D = 2 * Math.PI * R;
            Console.WriteLine($"D = 2 * 3.14 * {R} = {D:.###}\n-=-=-=-=-=-=-\n");
            return Math.Round(D, 2);
        }

        private static double PloshadRound(double R)
        {
            double S = Math.PI * Math.Pow(R, 2);
            Console.WriteLine($"S = 3.14 * {R}^2 = {S:.###}\n-=-=-=-=-=-=-=-\n");
            return Math.Round(S, 2);
        }
    
        private static double SharVolume(double R)
        {
            double V = 4.0 / 3.0 * Math.PI * Math.Pow(R, 2);
            Console.WriteLine($"V = 4.0 / 3.0 * 3.14 * {R}^2 = {V:.###}\n-=-=-=-=-=-=-=-\n");
            return Math.Round(V, 2);
        }
    }

}